package com.cjm.algorithm.str;

import java.util.Arrays;
import java.util.PriorityQueue;

public class Ti870240602 {
    public static void main(String[] args) {

    }

    int[] advantageCount(int[] qiwang, int[] tianji) {
        // 总共有多少马？
        int n = qiwang.length;
        // 这里放一个优先队列
        PriorityQueue<int[]> maxpq = new PriorityQueue<>((int[] p1, int[] p2) -> {
            return p1[1] - p2[1];
        });

        // 将齐王的马， 进行一下排序， 然后它的原来的index还不变
        // 使用的是上面的优先队列， 那么索引为0的值， 为原索引， 索引1的值， 为它的值， 但是
        // 它已经使用优先队列了， 所以， 是知道那个马是最好的了
        for (int i = 0; i < n; i++) {
            maxpq.offer(new int[]{i, tianji[i]});
        }


        // 然后， 我们再对田忌的马进行一下排序
        Arrays.sort(qiwang);

        int left = 0, right = n - 1;
        int[] res = new int[n];

        while (!maxpq.isEmpty()) {
            int[] pair = maxpq.poll();
            int index = pair[0];
            int value = pair[1];
            if (value < qiwang[right]) {
                res[index] = qiwang[right];
                right--;
            } else {
                res[index] = qiwang[left];
                left++;
            }
        }
        return res;
    }
}
